package com.rede.didiok.admin.entity;

import java.util.Date;
import java.util.List;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.rede.didiok.common.dto.user.UserDto;
import com.rede.didiok.common.entity.SuperEntity;

/**
 * 管理员表
 * 
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-08-07 18:21:17
 */
@Data
@TableName("a_admin")
public class AdminEntity extends SuperEntity<AdminEntity> {
	private static final long serialVersionUID = 7956111431097863100L;

	/**
	 * 用户名
	 */
	private String userName;
	/**
	 * 密码
	 */
	private String password;
	/**
	 * 性别(1:男2:女)
	 */
	private Integer gender;
	/**
	 * 个人头像
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String avatar;
	/**
	 * 邮箱
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String email;
	/**
	 * 出生年月日
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date birthday;
	/**
	 * 手机
	 * updateStrategy = FieldStrategy.IGNORED ：表示更新时候忽略非空判断
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String mobile;
	/**
	 * 自我简介最多150字
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String summary;
	/**
	 * 登录次数
	 */
	private Integer loginCount;
	/**
	 * 最后登录时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date lastLoginTime;
	/**
	 * 最后登录IP
	 */
	private String lastLoginIp;
	/**
	 * 昵称
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String nickname;
	/**
	 * QQ号
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String qqNumber;
	/**
	 * 微信号
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String weChat;
	/**
	 * 职业
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String occupation;
	/**
	 * github地址
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String github;
	/**
	 * gitee地址
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String gitee;
	/**
	 * 拥有的角色uid
	 */
	private String roleUid;
	/**
	 * 个人履历（Markdown）
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String personResume;
	/**
	 * 管理员绑定的用户【绑定的用户后，将以该用户的名义进行创作】
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED)
	private String userUid;


	// 以下字段不存入数据库

	/**
	 * 用户头像地址
	 */
	@TableField(exist = false)
	private List<String> photoList;

	/**
	 * 用户头像地址
	 */
	@TableField(exist = false)
	private String photoUrl;


	/**
	 * 所拥有的角色名
	 */
	@TableField(exist = false)
	private List<String> roleNames;

	/**
	 * 所拥有的权限路由
	 */
	@TableField(exist = false)
	private List<String> permissionList;

	/**
	 * 所拥有的角色名
	 */
	@TableField(exist = false)
	private RoleEntity role;

	/**
	 * 验证码
	 */
	@TableField(exist = false)
	private String validCode;

	/**
	 * 已用网盘容量
	 */
	@TableField(exist = false)
	private Long storageSize;

	/**
	 * 最大网盘容量
	 */
	@TableField(exist = false)
	private Long maxStorageSize;

	/**
	 * 令牌UID【主要用于换取token令牌，防止token直接暴露到在线用户管理中】
	 */
	@TableField(exist = false)
	private String tokenUid;

	/**
	 * 是否关注过该用户
	 */
	@TableField(exist = false)
	private Boolean isWatchUser;

	/**
	 * 绑定的用户
	 */
	@TableField(exist = false)
	private UserDto user;

}
